1. Field of the invention
The present invention relates to the field of computer networks and, more specifically, to the field of protocol processing systems for computer networks.
2. Prior Art
A number of computer networks are well known in the art. In general, these networks can be placed in one of three categories: (1) bus configurations, (2) ring configurations and (3) hub configurations.
One well-known bus configuration is the Ethernet system, originally developed by the Xerox Palo Alto Research Center. The Ethernet system uses a passive environment, such as a coaxial cable for communication between nodes on the network. The Ethernet system has no need for a central controller as it utilizes a fully distributed link mechanism known as Carrier Sense Multiple Access with Collision Detection (CSMA/CD). A station or node which is connected to the Ethernet network wishing to transmit information will first listen on the cable to see if the channel is free. If the station finds the channel in use, or if a collision with another channel is detected, the requesting channel waits a predetermined period of time and then retries the transmission. More detailed specifications of Ethernet configurations may be found with reference to The Ethernet--A Local Area Network, Data Link Layer and Physical Layer Specifications, Version 1, ACM Computer Commun. Rev., Vol. 11, no. 3, July 1981, pp. 20-66.
A ring configuration differs, physically, from a bus configuration in having the ends of its communication cable connected together to form a ring, rather than being open-ended as in a bus configuration. A node on the ring is connected to allow it to transmit bits of information onto the ring. Generally, a token is sent onto the ring. Nodes in the network monitor the ring for a token. When the token arrives at a node which wishes to transmit information, the node takes the token off the ring and transmits the information, along with address and error checking data, onto the ring. The other nodes continue to monitor the ring for the token. Nodes are also monitoring the ring for their own address. Each node propagates the information on the ring to the next node, waiting for the token or its address to appear. When a node recognizes its own address on the ring, it processes the information. The transmitting node replaces the token on the ring when it has completed transmission of information.
Generally, such bus and ring configurations are utilized in local area networks (LANs) A third type of network utilizes a hub architecture in which a plurality of devices, such as computers, graphics displays, etc. are coupled to a central hub. The hub allows communication of information between the plurality of devices. Further, the hub may be connected with one or more other hubs allowing communication of information between devices connected with the first hub and devices connected with other hubs.
In a hub configuration, as an example, it is known to accept a packet of information into a memory of a communication processor. The communication processor then processes the packet, adding necessary header and control information and transmits the packet in the network. In such a system, packets must first be fully received by the communication processor, then processed and finally placed on the network.
As the speed of computer systems and the demand for data increases, the quantity and speed of delivery of data in such networks must also increase. Therefore, as one primary object of the present invention, it is desired to develop a computer networking system which allows for delivery of data in the network at speeds heretofore not possible.
Generally, known networking systems require data which is to be transmitted over the network to be organized in a packet having a specified format. For example, a packet may typically consist of header information and, optionally, data. The header comprises information identifying the type of packet (e.g., data or control) and address information (e.g., destination node). For example, a particular packet may be a control packet used for establishing a connection on the network or it may be a data packet comprising data to be transmitted over the network. Processing requirements for different packet types vary. Therefore, it is a further object of the present invention to develop a networking system which efficiently processes packets of varying types.
Networking systems generally must provide for error detection and, optionally, corrections when transmitting information. Such detection/correction schemes are useful in determining whether a bit or number of bits have changed states during transmission, optionally, correcting such bits to their original state, and determining whether all bytes have been correctly transmitted. A number of error correction/detection schemes are well known in the art.
Known networking systems provide for calculation of a checksum for each packet of data processed by the system. The checksum is typically computed and transmitted as part of the data packet; normally, the checksum field is located in data packet as part of a header. The actual checksum value is calculated based on the header and user data.
Such known systems typically require two passes when processing a data packet. First, the data packet may be stored in a memory and a first pass through the data is required to identify the packet as a particular request type. Control information may then be added to the packet. A second pass is then made through the data to calculate a checksum.
Therefore, as another object of the present invention it is desired to develop a networking system which efficiently provides for error detection and checksum calculation.